package com.wolfalpha.utron.service;

import android.graphics.Bitmap;

import com.wolfalpha.utron.bean.ItemInformation;
import com.wolfalpha.utron.bean.ItemProject;
import com.wolfalpha.utron.bean.UserBaseInfo;
import com.wolfalpha.utron.bean.UserInfo;
import com.wolfalpha.utron.exception.LoginException;

import java.io.File;
import java.util.List;

/**
 * 用户信息操作服务类
 * <p/>
 * Created by luodon on 15/8/17.
 */
public interface UserService {

    /**
     * 登录接口
     *
     * @param acc 账号
     * @param pwd 密码
     */
    public UserInfo login(String acc, String pwd) throws LoginException;

    /**
     * 匿名登录
     *
     * @param mobile_model
     * @param mobile_os
     * @param apk_code
     */
    public void anonLogin(String mobile_model, String mobile_os, int apk_code);

    /**
     * 注册接口
     *
     * @param phone    手机接口
     * @param nickname 昵称
     * @param pwd      密码
     * @param scode    学校代码
     */
    public boolean register(String phone, String nickname, String pwd, String scode);

    /**
     * 发送验证码
     *
     * @param phone 手机号码
     * @return true发送成功;false发送失败
     */
    public boolean getPhoneCode(String phone);

    /**
     * 验证验证码
     *
     * @param phone 手机号码
     * @param code  验证码
     * @return true验证成功;false验证失败
     */
    public boolean checkPhoneCode(String phone, String code);

    /**
     * 检查昵称是否被使用过
     *
     * @param nickname 昵称
     * @return true使用过;false未使用
     */
    public boolean checkNickIsUnique(String nickname);


    /**
     * 更新个人信息
     *
     * @param userInfo
     * @return
     */
    public boolean updateIndentity(UserInfo userInfo);

    /**
     * 获取个人信息
     *
     * @return
     */
    public UserInfo getUserInfo(int id);

    /**
     * 更新个人头像
     *
     * @param pic_url
     * @return url
     */
    public String updateUserHead(File pic_url);


    /**
     * 获取网络头像
     *
     * @param url
     * @return
     */
    public Bitmap getUserHead(String url);


    /**
     * 获取个人关注的列表
     *
     * @param page
     * @return
     */
    public List<UserBaseInfo> getMyPartnerAttentions(int page);


    /**
     * 获取个人关注的项目列表
     *
     * @param page
     * @return
     */
    public List<ItemProject> getMyProjectAttentions(int page);

    /**
     * 获取个人收藏的资讯
     *
     * @param page
     * @return
     */
    public List<ItemInformation> getMyCollections(int page);

    /**
     * 关注某人
     *
     * @param userId
     * @param status true for 加 false for 取消
     */
    public boolean attention(int userId, boolean status);
}
